Methods for managing ownership of redundant data and systems thereof

ABSTRACT

A storage system according to one embodiment includes a first storage tier; a second storage tier; logic for storing instances of a file in the first storage tier and the second storage tier; logic for determining when to migrate an instance of the file associated with a first user and stored on the first storage tier to the second storage tier; logic for searching for an instance of the file or portion thereof on the second storage tier that is not associated with any user; logic for associating the instance of the file or portion thereof on the second storage tier with the first user; and logic for disassociating the instance of the file on the first storage tier from the first user. Additional systems, methods, and computer program products are also presented.

CROSS REFERENCE TO RELATED APPLICATIONS

Reference is made to the following U.S. patent applications, which arecoassigned and filed on even date herewith: U.S. patent applicationentitled “METHODS FOR MANAGING OWNERSHIP OF REDUNDANT DATA AND SYSTEMSTHEREOF” having Attorney Docket Number TUC920100095US1/TUC1P053; U.S.patent application entitled “METHODS FOR MANAGING OWNERSHIP OF REDUNDANTDATA AND SYSTEMS THEREOF” having Attorney Docket NumberTUC920100099US1/TUC1P055; U.S. patent application entitled “METHODS FORMANAGING OWNERSHIP OF REDUNDANT DATA AND SYSTEMS THEREOF” havingAttorney Docket Number TUC920100100US1/TUC1P056; and U.S. patentapplication entitled “METHODS FOR MANAGING OWNERSHIP OF REDUNDANT DATAAND SYSTEMS THEREOF” having Attorney Docket NumberTUC920100101US1/TUC1P057.

BACKGROUND

The present invention relates to data storage systems, and moreparticularly, this invention relates to hierarchical or “tiered”storage-based systems capable of being used in high performance,redundant data systems.

Television has become a mainstay of society around the world. Theability to record television programming has proliferated in recentyears, and particularly in conjunction with digital video recorders(DVRs) such as TIVO brand DVRs. Typically, a subscriber has one or moreDVRs present in his or her home, that allow recording of televisionprogramming as it is received from the broadcaster, and playback ondemand.

In an effort to improve efficiency and reduce cost, a remote storagedigital video recorder (RS-DVR) may be used to store huge amounts ofvideo data on a network site, which would essentially provide the samefunctionality as a local digital video recorder. Like a local DVR, auser of a RS-DVR programs into the RS-DVR system which programs are tobe recorded, and plays the recorded programs back when desired. Duringplayback, the user can use any of the trick modes (e.g. pause, fastforward, fast reverse, etc.), and content providers require support forthese trick modes. For example, disk-based streaming systems which storeand stream programs from a hard disk drive may require additionalprocessing and storage on the part of the server when trick modes areused, because separate files for fast forward and rewind may need to bestored. The user decides when a recording is to be deleted. The onlydifference from a user's point of view is that the RS-DVR's storage isphysically remote, e.g. it is at the content provider's end of theconnection, not at the user's end of the connection, as is the case withconventional local DVRs.

A RS-DVR is a lower cost storage solution for a content provider tomaintain versus each user having a local DVR, because it costs less todeploy, administer, and maintain a centralized storage resource, asopposed to a content provider deploying distributed storage at eachuser's access point (e.g. residence, workplace, mobile hotspots, etc.).It also costs less for specialists to service a centralized InformationTechnology (I/T) facility than to service multiple local DVRs deployedat user's access points (which can be physically altered and/or damagedby the user).

One issue plaguing the implementation of RS-DVR services is the need toprovide fast access to huge amounts of data to multiple users at once.Moreover, regulations in some jurisdictions may require each subscriberto have ownership of his or her own copy of a recorded program, whereownership is some association between the subscriber, device of thesubscriber, etc., and a given copy of the recorded program. As apparent,the required data capacity could be astronomical. Implementation ofhigher speed storage systems, such as hard disk drives, in an RS-DVRwork well, but the high cost of an all-disk system makes such systemsunaffordable. What is therefore needed is a way to provide a combinationof high performance coupled with low storage cost per unit of data.

One approach previously deemed too slow for high performance, highdemand systems such as RS-DVRs is storage hierarchical storagemanagement (HSM) systems. Hierarchical storage, with active files on afirst tier of storage media (such as hard disk, rewritable optical disk,nonvolatile memory, etc.) and archived files on a second storage tier ofless expensive and/or slower-to-access storage media (such as magnetictape, digital tape, hard disk, optical disk, etc.) is popular for slowerdata applications for its cost savings, energy savings, etc. A commonscheme throughout HSM systems is to use hard disk media for a firststorage tier and magnetic tape media for a second storage tier, howeverany type of media may be used. In some HSM systems, random accessstorage media, such as hard disk media, is predominantly used in thefirst tier, while sequential access storage media, such as magnetic tapemedia, is predominantly used in the second tier. However, traditionalHSM systems suffer from several drawbacks which limit their adoption,particularly in high performance systems such as RS-DVRs.

One problem with using standard HSM for a RS-DVR application is thatdata may need to be moved from the lower, slower tier (e.g. tape) to thehigher, faster tier (e.g. disk) very quickly. Standard HSM operationresults in too much latency for these high performance environments. Forexample, when it comes time to access data which has been moved to tape,it can take about 10 seconds to mount the tape cartridge, 15 seconds toload-thread the tape, and 95 seconds or longer to locate the start ofthe data, which might be located at the farthest end of the tape. Insome instances, a worst case read access time of up to about 2 minutescan be encountered, which is unacceptable in high performanceenvironments such as video playback. Since users typically expect thatwhen a program is chosen and “play” is selected, that the program willbegin to play expediently, any significant delay to accessing theprogram is unacceptable to the service provider. The result is thatstandard HSM systems have heretofore been thought too slow for use inRS-DVR applications.

BRIEF SUMMARY

A storage system according to one embodiment includes a first storagetier; a second storage tier; logic for storing instances of a file inthe first storage tier and the second storage tier; logic fordetermining when to migrate an instance of the file associated with afirst user and stored on the first storage tier to the second storagetier; logic for searching for an instance of the file or portion thereofon the second storage tier that is not associated with any user; logicfor associating the instance of the file or portion thereof on thesecond storage tier with the first user; and logic for disassociatingthe instance of the file on the first storage tier from the first user.

A storage system according to another embodiment includes a firststorage tier; a second storage tier; logic for storing instances of afile in the first storage tier and the second storage tier; logic fordetermining when to migrate an instance of the file associated with afirst user and stored on the first storage tier to the second storagetier; logic for searching for an instance of the file or portion thereofon the second storage tier; logic for replicating the instance of thefile or portion thereof on the second storage tier; logic forassociating the replicated instance of the file or portion thereof onthe second storage tier with the first user; and logic fordisassociating the instance of the file on the first storage tier fromthe first user.

A method according to one embodiment includes determining when tomigrate an instance of a file associated with a first user and stored ona first storage tier of a storage system to a second storage tier of thestorage system; searching for an instance of the file or portion thereofon the second storage tier that is not associated with any user;associating the instance of the file or portion thereof on the secondstorage tier with the first user; and disassociating the instance of thefile on the first storage tier from the first user.

A method according to another embodiment includes determining when tomigrate an instance of a file associated with a first user and stored ona first storage tier of a storage system to a second storage tier of thestorage system; searching for an instance of the file or portion thereofon the second storage tier; replicating the instance of the file orportion thereof on the second storage tier; associating the replicatedinstance of the file or portion thereof on the second storage tier withthe first user; and disassociating the instance of the file on the firststorage tier from the first user.

A computer program product for managing a storage system according toone embodiment includes a computer readable storage medium havingcomputer readable program code embodied therewith. The computer readableprogram code includes computer readable program code configured todetermine when to migrate an instance of a file associated with a firstuser that is stored on a first storage tier of a storage system to asecond storage tier of the storage system; computer readable programcode configured to search for an instance of the file or portion thereofon the second storage tier that is not associated with any user;computer readable program code configured to search for an instance onthe second storage tier of the storage system that includes a remainingportion of the file; computer readable program code configured toreplicate the instance of the file or portion thereof on the secondstorage tier; computer readable program code configured to associate theinstance or replicated instance of the file or portion thereof on thesecond storage tier with the first user; and computer readable programcode configured to disassociate the instance of the file on the firststorage tier from the first user.

Other aspects and embodiments of the present invention will becomeapparent from the following detailed description, which, when taken inconjunction with the drawings, illustrate by way of example theprinciples of the invention.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 illustrates a network architecture, in accordance with oneembodiment.

FIG. 2 shows a representative hardware environment that may beassociated with the servers and/or clients of FIG. 1, in accordance withone embodiment.

FIG. 3 shows a storage system, according to one embodiment.

FIG. 4 shows a redundant data protection scheme for a RS-DVR system,according to one embodiment.

FIG. 5 shows HSM movement to a second storage tier including data andmetadata, according to one embodiment.

FIG. 6 shows “data-less” file movement from a second storage tier to afirst storage tier, according to one embodiment.

FIG. 7 shows a flowchart of a method, according to one embodiment.

FIG. 8 shows a flowchart of a method, according to one embodiment.

DETAILED DESCRIPTION

The following description is made for the purpose of illustrating thegeneral principles of the present invention and is not meant to limitthe inventive concepts claimed herein. Further, particular featuresdescribed herein can be used in combination with other describedfeatures in each of the various possible combinations and permutations.

Unless otherwise specifically defined herein, all terms are to be giventheir broadest possible interpretation including meanings implied fromthe specification as well as meanings understood by those skilled in theart and/or as defined in dictionaries, treatises, etc.

It must also be noted that, as used in the specification and theappended claims, the singular forms “a,” “an” and “the” include pluralreferents unless otherwise specified.

The following description discloses several preferred embodiments ofhierarchical or “tiered” storage-based systems and use thereof in highperformance, highly redundant data systems, as well as operation and/orcomponent parts thereof.

In some HSM systems, where the use of physical tape is acceptable in allregards except access time, there typically is a high degree of dataredundancy. This redundancy typically lends itself well to datadeduplicated storage, yet in some environments, data deduplicatedstorage is not allowed, e.g. as in the case where a particular instanceof a recorded television program may only be associated with onesubscriber. In those environments, there is an opportunity to usephysical tape to arrive at a lowest cost point of implementation anduse, if the issues with achieving acceptable access times can beovercome.

In some embodiments, in order to address the access time limitations ofHSM systems, a series of techniques that allow for use of physical tapein certain high performance, high redundancy environments, such as aremote storage digital video recorder (RS-DVR), are presented. Thefollowing illustrative characteristics of these systems are individuallyand/or collectively novel approaches to solving the access time problem:(1) using deduplicated replication techniques, but only for thepre-migration part of a HSM movement; (2) implementing the deduplicatedreplication by use of unique identifiers, such as a unique programidentifier (UPI), rather than calculating cryptographic hashes toattempt to determine that two files are the same; (3) having file systemenforced protection of the unique identifier, which changes the uniqueidentifier to a null value (or identifies it with a flag) if the filedata is modified; (4) transferring a file once to an intermediaryfunction, such as LTFS (an acronym which represents Linear Tape FileSystem to some, and Long Term File System to others), and thenperforming multiple transfers of that file to the next storage tier; (5)breaking a large file into many segments to increase the amount of datathat can be moved from one storage tier to a lower performance storagetier; (6) using pointers with access control restrictions to limit theparts of a segment that can be accessed by a given user; and (7)implementing an HSM strategy managed mostly by moving ownership betweenmultiple ownership lists.

It must be noted that various embodiments in the present description mayimplement the foregoing techniques and characteristics individually orin any combination.

In one general embodiment, a storage system includes a first storagetier; a second storage tier; logic for storing instances of a file inthe first storage tier and the second storage tier; logic fordetermining when to migrate an instance of the file associated with afirst user and stored on the first storage tier to the second storagetier; logic for searching for an instance of the file or portion thereofon the second storage tier that is not associated with any user; logicfor associating the instance of the file or portion thereof on thesecond storage tier with the first user; and logic for disassociatingthe instance of the file on the first storage tier from the first user.

In another general embodiment, a storage system includes a first storagetier; a second storage tier; logic for storing instances of a file inthe first storage tier and the second storage tier; logic fordetermining when to migrate an instance of the file associated with afirst user and stored on the first storage tier to the second storagetier; logic for searching for an instance of the file or portion thereofon the second storage tier; logic for replicating the instance of thefile or portion thereof on the second storage tier; logic forassociating the replicated instance of the file or portion thereof onthe second storage tier with the first user; and logic fordisassociating the instance of the file on the first storage tier fromthe first user.

In one general embodiment, a method includes determining when to migratean instance of a file associated with a first user and stored on a firststorage tier of a storage system to a second storage tier of the storagesystem; searching for an instance of the file or portion thereof on thesecond storage tier that is not associated with any user; associatingthe instance of the file or portion thereof on the second storage tierwith the first user; and disassociating the instance of the file on thefirst storage tier from the first user.

In another general embodiment, a method includes determining when tomigrate an instance of a file associated with a first user and stored ona first storage tier of a storage system to a second storage tier of thestorage system; searching for an instance of the file or portion thereofon the second storage tier; replicating the instance of the file orportion thereof on the second storage tier; associating the replicatedinstance of the file or portion thereof on the second storage tier withthe first user; and disassociating the instance of the file on the firststorage tier from the first user.

In one general embodiment, a computer program product for managing astorage system includes a computer readable storage medium havingcomputer readable program code embodied therewith. The computer readableprogram code includes computer readable program code configured todetermine when to migrate an instance of a file associated with a firstuser that is stored on a first storage tier of a storage system to asecond storage tier of the storage system; computer readable programcode configured to search for an instance of the file or portion thereofon the second storage tier that is not associated with any user;computer readable program code configured to search for an instance onthe second storage tier of the storage system that includes a remainingportion of the file; computer readable program code configured toreplicate the instance of the file or portion thereof on the secondstorage tier; computer readable program code configured to associate theinstance or replicated instance of the file or portion thereof on thesecond storage tier with the first user; and computer readable programcode configured to disassociate the instance of the file on the firststorage tier from the first user.

The description herein is presented to enable any person skilled in theart to make and use the invention and is provided in the context ofparticular applications of the invention and their requirements. Variousmodifications to the disclosed embodiments will be readily apparent tothose skilled in the art and the general principles defined herein maybe applied to other embodiments and applications without departing fromthe spirit and scope of the present invention. Thus, the presentinvention is not intended to be limited to the embodiments shown, but isto be accorded the widest scope consistent with the principles andfeatures disclosed herein.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as “logic,” “circuit,” “module” or“system.” Furthermore, aspects of the present invention may take theform of a computer program product embodied in one or more computerreadable medium(s) having computer readable program code embodiedthereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), a digital versatiledisc read-only memory (DVD-ROM), an optical storage device, a magneticstorage device, or any suitable combination of the foregoing. In thecontext of this document, a computer readable storage medium may be anytangible medium that can contain, or store a program for use by or inconnection with an instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like, and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

FIG. 1 illustrates a network architecture 100, in accordance with oneembodiment. In the context of the present network architecture 100, thenetworks 104 and 106 may each take any form including, but not limitedto a LAN, a WAN such as the Internet, WLAN, PSTN, internal telephonenetwork, etc.

Further included is at least one data server 114 coupled to theproximate network 108, and which is accessible from the remote networks102 via the gateway 101. It should be noted that the data server(s) 114may include any type of computing device/groupware. Coupled to each dataserver 114 is a plurality of user devices 116. Such user devices 116 mayinclude a set top box (STB), digital video recorder (DVR), desktopcomputer, laptop computer, hand-held computer, printer or any other typeof device comprising suitable logic. It should be noted that a userdevice 111 such as that described above may also be directly orwirelessly coupled to any of the networks, in one embodiment.

A peripheral 120 or series of peripherals 120, e.g. facsimile machines,printers, networked storage units, HSM system, etc., may be coupled toone or more of the networks 104, 106, 108. It should be noted thatdatabases, servers, and/or additional components may be utilized with,or integrated into, any type of network element coupled to the networks104, 106, 108. In the context of the present description, a networkelement may refer to any component of a network.

FIG. 2 shows a representative hardware environment associated with auser device 111, 116 and/or server 114 of FIG. 1, in accordance with oneembodiment. Such figure illustrates a typical hardware configuration ofa workstation having a central processing unit 210, such as amicroprocessor, and a number of other units interconnected via a systembus 212. Other devices 111, 116, such as a STB or DVR, may includesimilar, more, fewer, and/or different components and/orcharacteristics. Moreover, user devices may include viewing devices suchas televisions, personal computers (PCs), laptops, iPods, iPads, etc.and the like.

The workstation shown in FIG. 2 includes a Random Access Memory (RAM)214, Read Only Memory (ROM) 216, an I/O adapter 218 for connectingperipheral devices such as disk storage units 220 to the bus 212, a userinterface adapter 222 for connecting a keyboard 224, a mouse 226, aspeaker 228, a microphone 232, and/or other user interface devices suchas a touch screen and a digital camera (not shown) to the bus 212,communication adapter (interface) 234 for connecting the workstation toa communication network 235 (e.g. a data processing network) and adisplay adapter 236 for connecting the bus 212 to a display device 238.

The workstation may have resident thereon an operating system such asthe Microsoft WINDOWS Operating System (OS), a MAC OS, a UNIX OS, aLINUX OS, etc. It will be appreciated that a preferred embodiment mayalso be implemented on platforms and operating systems other than thosementioned. A preferred embodiment may be written using JAVA, PERL, C,and/or C++ language, or other programming languages, along with anobject oriented programming methodology. Object oriented programming(OOP), which has become increasingly used to develop complexapplications, may be used. XML encoding may used for some structures.

In embodiments where the user device 111, 116 and/or server 114 as shownin FIG. 1 is a tape drive or hard disk drive, as shown in FIG. 2, theinterface 234 may also provide communication between the drive and ahost (integral or external) to send and receive data and for controllingoperations of the drive and communicating the status of the drive to thehost, as will be understood by those of skill in the art.

Communications components such as input/output or I/O devices (includingbut not limited to keyboards, displays, pointing devices, etc.) may becoupled to the system either directly or through intervening I/Ocontrollers.

Communications components such as buses, interfaces, network adapters,etc. may also be coupled to the system to enable the data processingsystem, e.g. host, to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modem and Ethernet cards are just a few of thecurrently available types of network adapters.

It will be clear that the various features of the foregoingmethodologies may be combined in any way, creating a plurality ofcombinations from the descriptions presented above.

It will also be clear to one skilled in the art that the methodology ofthe present invention may suitably be embodied in a logic apparatuscomprising logic to perform various steps of the methodology presentedherein, and that such logic may comprise hardware components and/orfirmware components.

It will be further appreciated that embodiments of the present inventionmay be provided in the form of a service deployed on behalf of acustomer to offer service on demand.

One or more I/T technologies may be applied to a centralizedstorage/server solution, such as Redundant Array of Inexpensive Disks(RAID) to provide a more reliable disk storage system, HSM to enable alower cost (to both acquire and operate) solution, deduplicated storage,and deduplicated replication, according to various embodiments.

Note that any of these I/T techniques can be implemented in multiple newand nonobvious ways. For example, RAID and/or HSM are standardtechniques that may be implemented in a manner disclosed herein in anRS-DVR storage solution that may be implemented in various embodiments.Another I/T technique, that may be implemented in various embodiments isdeduplicated replication.

As an example, imagine that seven subscribers create recordings of agiven program and those recordings are stored in a centralized RS-DVRsolution. At first, all recordings are stored on hard disk in a firststorage tier of a storage system, and recordings on hard disk areprotected by RAID. After those recordings are made, a subset of therecordings which are not actively being viewed are moved to a lower coststorage solution on a second storage tier of the storage system (e.g.physical tape media supporting the first storage tier storage, accordingto one embodiment) by HSM movement. The data on the second storage tier,such as magnetic tape, may also be protected by redundancy acrossdrives, such as a Redundant Array of Inexpensive Tape (RAIT).

Now referring to FIG. 3, a storage system 300 is shown according to oneembodiment. Note that some of the elements shown in FIG. 3 may beimplemented as hardware and/or software, according to variousembodiments. The storage system 300 may include a storage system manager312 for communicating with a plurality of media on a first storage tier302 and a second storage tier 306. The first storage tier 302 preferablymay include one or more random access media 304, such as hard disks inhard disk drives. The second storage tier 306 may preferably include oneor more sequential access media 308, such as magnetic tape in tapedrives. The storage system manager 312 may communicate with the storagemedia 304, 308 on the first and second storage tiers 302, 306 through anetwork 310, such as a storage area network, as shown in FIG. 3. Ofcourse, any arrangement of a storage system may be used, as known tothose of skill in the art.

The storage system 300 also includes logic for storing data in the firststorage tier 302 and the second storage tier 306, logic for determiningwhen to migrate an instance of a file associated with a first user andstored on the first storage tier 302 to the second storage tier 306. Thestorage system 300 also includes logic for searching for an instance ofthe file or portion thereof on the second storage tier 306 that is notassociated with any user, logic for associating the instance of the fileor portion thereof on the second storage tier 306 with the first user,and logic for disassociating the instance of the file on the firststorage tier 302 from the first user.

According to one embodiment, if an instance of only a portion of thefile is found, the searching may be repeated to attempt to find aremaining portion of the file. In this manner, many different instanceson the second storage tier 306 may be combined to form a completeinstance of the file on the second storage tier 306. In a furtherembodiment, any portion of the file that is not found during thesearching may be replicated from an instance of the file or portionthereof on the second storage tier 306. Then, the replicated instance ofthe file may be associated with the first user, along with any remainingportions of the file.

According to one approach, each file may be assigned a uniqueidentifier, and this identifier may be associated with any instance ofthe file or portion thereof stored to the storage system 300. Thisenables a faster search for instances of the file or portions thereof tobe performed on the storage tiers of the storage system 300. In oneapproach, the unique identifier and the file are stored in an index forquick searching, rather than scanning the several tiers of the storagesystem 300 to find the unique identifiers.

In another embodiment, the logic for searching for the instance of thefile or portion thereof on the second storage tier 306 may be selectedfrom the following: searching for an identifier of the file, comparing acryptographic checksum calculation of the file and one or more instancesof the file on the second storage tier 306, comparing the file with oneor more instances of the file on the second storage tier 306 bit-by-bit,comparing a size of the file with one or more instances of the file onthe second storage tier 306, etc. Size may indicate a number of bits, alength, and/or may include a similar size or a size greater than thefile size, etc.

In another embodiment, the storage system 300 may include logic forassociating each user to a unique user identifier and storing theassociation in a first index, logic for associating each instance of thefile on the storage system 300 to a unique user via the unique useridentifiers and storing the association in a second index, and logic forassociating each instance of the file on the storage system 300 to oneusage status related to usage of the instance of the file and storingthe association in a third index. The indices are not shown in FIG. 3,but may be stored in the first storage tier 302 or any other easilyaccessible storage media. In a further embodiment, the first index, thesecond index, and the third index may be markup language index files,such as XML files, HTML files, etc.

In some approaches, a file and instances thereof may include video datafrom a broadcast from any source, such as a television broadcast, abroadcast across a network (e.g. Internet broadcast), broadcast from anon-demand service (e.g., video on demand), as data received from acontent provider, satellite broadcast, or any other method of deliveringcontent to a user as would be apparent to one of skill in the art uponreading the present descriptions. To aid the reader in understanding theconcepts, much of the description herein refers to a televisionbroadcast. This has been done by way of example only and the variousembodiments may operate in conjunction with any type of broadcast,combination of broadcast types and/or data derived therefrom.

For the remainder of this description, the first storage tier of astorage system may be described as disk, while the second storage tierof the storage system may be described as tape. Of course, other storagemedia may be used for either tier, and this is for description purposesonly, and in no way limits the applicability of the embodiments providedherein to any particular arrangement of storage media types.

FIG. 4 illustrates a RAIT at the highest level, according to oneembodiment. First, a list of users who recorded a program (call thatprogram X) is created. In one embodiment, the list of users exists as adata structure in software, and in FIG. 4 is shown as list Subs_List_X.The list includes two pieces of information for each user who recordedprogram X. First, the list includes a user number which may be used toidentify a given user (the user number for the first such user isrepresented in FIG. 4 as S₁). Second, the list includes a pointer to agiven stored instance of that recording as a file (the pointer to thefirst such file is represented in FIG. 4 as *F_(A)). A user number andfile pointer pair exists for each user who recorded program X. Each usernumber in Subs_List_X is thus unique and represents a different user.Additionally, each file pointer in Subs_List_X is unique, meaning thateach of those users ‘owns’ a unique instance of the recording. In apreferred embodiment, this functionality may be provided without anyadditional licensing from content providers.

FIG. 4 also illustrates that there may be two parts to a file, the datain the file, and the metadata associated with that file. Typically afile system maintains the file in two pieces: data extents written tothe storage media (e.g. magnetic disk, magnetic tape, etc.) and the filemetadata kept in a file index table of some sort, e.g. as describedbelow. The index table is typically also stored to the storage media,and a second copy of it is typically kept in server memory for fastaccess, such as RAM, Flash, etc.

Referring now to FIG. 5, assume that only six users recorded theprogram, and the storage system wants to move the fifth user's copy totape using the HSM. Rows B1 and B2 represent the recordings stored todisk and tape, respectively, before the HSM movement. The HSM movementbegins by moving the data and associated file metadata to tape in twoseparate steps (those two steps could in principle be performed ineither order), which essentially performs the pre-migration copy part ofthe HSM movement.

Row B3 shows the recordings stored to tape after the pre-migration. InStep 3 the RAIT-5 parity is recalculated to include the new file. InStep 4, the source copy of the pre-migration copy is released,essentially making the transfer a migration. What had been the sourcecopy of the recording is no longer associated with any given user, andso may be overwritten or alternately used as a spare. One embodimentstores user numbers in the file metadata, in which case releasing thefile means changing file metadata. If so, then the RAID-5 parity may berecalculated to reflect any changes made to files storing thoserecordings to disk. But since only the metadata actually changed, it islikely that the only RAID-5 calculation update needed is to reflectupdates to the file index. A second embodiment tracks ownership changes,which are tracked through Subs_List_X, and that is the only datastructure that has to be changed. That data structure may be kept inboth memory and on disk, enabling fast random access performance updateof RAID parity calculated across that structure. If the ‘freed’ diskspace is then overwritten, then the Data area may be changed and RAIDparity across that recalculated. With either option, there may be noneed to change RAID calculated across the Data part of that recordingunless that Data area is actually changed by erasure or overwrite. B4shows the recordings stored to disk after the migration is complete.

Referring now to FIG. 6, six users recorded a program and the storagesystem wants to move, using HSM, the sixth user's copy from tape todisk. Rows B1 and B2 represent the recordings stored to disk and tape,respectively, before the HSM movement. The HSM movement would typicallybegin by moving the data and associated file metadata to disk in twosteps to perform the pre-migration copy part of the HSM movement. Theseoperations are indicated by the thick and thin arrows, respectively,between DATA_(F) and DATA_(C). Note, however, that these copies of dataand metadata only involve actual data movement when absolutelynecessary. As will be described below, deduplicated replicationtechniques first make an assessment of whether the data beingtransferred is already at the destination. If so, there is no need totransfer it. In the case depicted, the data part of the file was in factalready present, because it represented an identical copy of that datawhen the fifth user's recording was on disk. But, as shown in FIG. 5,the fifth user's recording was migrated to tape and the copy on disk hadbeen released. Hence, the data on disk was orphaned (e.g. is unused),and is now available for adoption. Since the same data that is to bepotentially moved as part of Step 1 in FIG. 6 already exists at thedestination, it would be wasteful to transfer it there. Note that Row B3shows the recordings stored to disk after the pre-migration.

In Step 3, the RAID-5 parity is recalculated to include the new file.This may only be necessary if the first option is implemented (trackuser number in file metadata), and if so, a change to the RAID-5 parityacross the file index is perhaps the only change made. If the secondoption (track user number in Subs_List_X only) is implemented, then anupdate to the Subs_List_X data structure in memory and on disk is made.In Step 4, the source copy of the pre-migration copy is released,essentially making the transition from pre-migrated to migrated, so thefile has been moved (i.e. there are not two file copies of that user'srecording, only one). What had been the source copy of the recording isno longer associated with any given user, and so may be overwritten ordesignated as a spare so that it may then be reused. Note that the sametwo options at the source are available: to update the file metadata(and if so, to update the file index and any parity across it) or toupdate only a list which tracks these changes. In one embodiment, asingle Sub_List_X that is being used to track both disk and tape copiesmay be used, as shown in FIG. 4. Or, in another embodiment, two separatelists may be kept, one for copies on disk and another for copies ontape. Note that there is no need to change RAIT calculated across thedata part of that recording unless that was actually changed by erasureor overwrite. B4 shows the recordings stored to tape after the migrationis complete.

Referring again to FIG. 6, a “data-less” file movement from tape to diskis shown, which allows a user to get access to a requested recordingquickly. That is, it could be that neither of the two potentialmovements shown is actually necessary, as in the case in the situationpictured. Only the data structure tracking which recording instance isowned by which user is updated and this update is made in memory and ondisk, both of which allow for very rapid random access (e.g.sub-second). If user ownership had been tracked by file metadata storedto tape, then the file index on tape would have to be updated and thiswould limit how quickly the file movement could be completed—it wouldlikely take at least 30 seconds. Thus, a significant advantage isachieved when that file ownership is tracked by a data structure such asSubs_List_X in FIG. 4 and not via file metadata stored to tape. Notethat the same or similar principles may be applied to provide for“data-less” file movement from disk to tape. For example, if instead of“<empty>” in the fourth box of row B2 in FIG. 5, there was “Data”associated with a recording of the same program, which was not presently‘owned’ by a given user, meaning it had been orphaned, then Step 1(transfer of Data) may be skipped which modifies the file movementdepicted in FIG. 5 such that it is a “data-less” transfer.

One benefit of various embodiments of the present invention is that theymay take advantage of existing technology for portions of theirimplementation. A brief description of various technologies which may beimplemented in some embodiments is presented below. The “data,” “dataobject,” etc., referenced herein may refer to a file or portion thereofor an instance of a file or an instance of a portion of a file used in aRS-DVR system according to some embodiments. Similarly, an “instance” asused herein may refer to an instance of the file, an instance of aportion of a file, an instance having the file plus more data, etc.Thus, for example, an instance may be a copy, replication, or duplicateof the file, the file itself, a migration of the file, the file storedin a particular storage system or stored using a particular technique,etc. In a RS-DVR system, a file may include data representing atelevision or other program content that may be generated from abroadcast such as a television broadcast, network (e.g. Internet)source, on-demand service, as data received from a content provider,etc.

RAID techniques are broadly used in the I/T industry for bothperformance and reliability reasons. In a RAID, striping refers towriting (or reading) some data entity across multiple diskssimultaneously to get higher performance—essentially the sum of theperformance of the individual disks being striped. According to oneembodiment, the RAID employed in the system may utilize striping and/orany other RAID technique known in the art.

In a RAID, error correction refers to a practice whereby redundant(“parity”) data are stored to allow problems to be detected and possiblyfixed (known as error correction or fault tolerance).

In a RAID, mirroring refers to writing identical data to two hard diskdrives (HDDs) instead of one, and is the simplest form of redundancy.Mirroring is used to achieve high availability (HA) in servers (e.g.data is written to both disks, and second disk is read from if the firstdisk fails).

In one embodiment, including RAID configurations using RAID-1 mirroringand RAID-5 striping, relying on the redundancy, loss of any one faileddisk may be tolerated. The simplest form of RAID-5 is calculation viasimple XOR which if applied across an odd set of identical inputs (data)will result in one more replica of the identical data.

HSM techniques are broadly used in the I/T industry for cost reasons.HSM is based on a storage hierarchy, e.g. having tiers of storageseparated by access and/or costs associated with each tier. Simply put,the fastest storage (e.g. SRAM) is the most expensive. The next fasteststorage (e.g. DRAM) is somewhat cheaper than SRAM, but much higherperforming than even fast Fibre Channel (FC) disk, but much moreexpensive than magnetic disk. FC disk in turn is much higher performingthan lower cost disk such as SATA, but much more expensive as well. AndSATA is much higher performing (from a random access point of view) thantape, but it is much more expensive as well. For some data, it isimportant that the data be kept in very high performance silicon storagelike SRAM and so the need justifies the additional cost. But for mostdata, there is no valid business reason for the data to be on expensivestorage—e.g. it is relatively infrequently accessed and when it isaccessed, some read access latency is acceptable. For example, storingdata on near-line tape, i.e. in an automated tape library (ATL), may becompletely adequate. For most customers, no single tier of storage istypically adequate. However, keeping all their data on the very highperformance storage, when only a small subset of their data reallyrequires high performance storage, is cost prohibitive. Similarly,keeping all their data in a more affordable storage solution which hasadequate performance for most of their data, but not all of their data,is also unacceptable because it is not adequate from a performance pointof view for some subset of their data.

So, a tradeoff may be made between high performance and low cost storagesolutions, with some of the data being kept for a time on highperformance, high cost storage. But the data that is kept in thatpremium storage changes over time, in most applications. Some data whichonce had to be kept on high performance storage may fall into relativedisuse to the point that it is now tolerable, and cost advantageous, forit to be moved to lower performing, lower cost storage. The simple factis that it is most economical to implement a system which provides onlyadequate performance and storage of their data. Therefore, generalpractice techniques dictate minimizing the amount of data at each of themore expensive, higher performing storage tiers, and pushing it to thelower cost, lower performing storage tiers. Therefore, cost effectivestorage solutions may apply HSM techniques extensively. Accordingly,various embodiments may employ HSM of any type, including thosedisclosed herein.

According to one embodiment, caching may be used, which stores data to ahigh performance (and thus high cost) storage tier for very rapidaccess. There are multiple forms of caching. First, “flow-through”caching such as a First In First Out (FIFO) buffer writes the mostrecently received data into the buffer, effectively overwriting theoldest data in buffer which has been released for overwrite. In thiscase, the caching policy is strictly based on when received, with thehighest priority given to the most recently received data. That said, aFIFO is typically managed so that older data is not lost if it hasn'tyet been read out of the FIFO's output. Some form of handshaking istypically used on the FIFO's output to assure that this output data isreceived at its destination before permitting it to be overwritten. Oncethe output of the FIFO reception is confirmed, the location holding thatoutput data is released and may be overwritten. Depending on how theFIFO is implemented, data which is released might not be overwritten forsome time. For example, if it is managed as a circular buffer, olderdata won't be overwritten until enough data has been received sincewriting began to wrap around and overwrite it. One use for FIFOs is tospeed match interfaces between asynchronous (or synchronous butindependently gated) clock domains.

Volatile caching is data storage that is not protected against powerloss. Said differently, power loss of sufficient duration will result indata loss of data which is stored in volatile storage. Non-volatilecaching is data storage that is protected against power loss. Saiddifferently, once stored in truly non-volatile storage, power loss ofeven indefinite duration (e.g. a year or more) does not result in lossof data which is stored in non-volatile storage. Examples of volatileand non-volatile storage are well known in the art and may be employedin some embodiments.

Write caching is used as a high performance temporary storage locationduring a write operation until the data may be written to the next levelof storage. This is typically done when the latency of writing to thenext level of storage directly is sub-optimally slow due to writelatency. Write caching is sometimes managed in a similar manner as FIFO.Most modern non-volatile storage boxes, whether solid-state drives, diskdrives (or arrays), or tape drives, have some form of write caching. Insome cases, the volatility of write caching to DRAM is recognized by theapplication. For example, when writing to tape, a standard assumption insome approaches is that nothing written to the tape drive is actuallynon-volatilely stored on magnetic tape until the drive is forced to“synchronize,” which means forced to write to non-volatile storage. Inother cases, like when writing to disk, the assumption may be theopposite—that is when the drive responds that it has successfullywritten the data, the writing application is assuming it is storedpermanently (i.e. non-volatilely). That said, the vast majority of highperformance disk systems do perform write caching to volatile storageinternal to their system (i.e. inside the disk drive or array assembly),without the using application having knowledge of it (i.e.transparently). These disk systems may with this scheme because theyhave essentially made a non-volatile system solution which uses thevolatile memory, e.g. DRAM, but additionally uses other technologies(e.g. battery backup to allow writing to flash or dumping to disk in theevent of power loss). Some write caching is essentially “flow-through”but some devices allow select data to be held “pinned” in cache, andaccessible during a read operation, long after data received before orafter it has flowed out of the cache.

Read caching is used as a high performance temporary storage location ofdata read from the next slower level of storage when the latency ofreading from the next level of storage directly is sub-optimally slowdue to access time. Most modern non-volatile storage systems, such asdisk drives (or arrays), or even tape drives, have some form of readcaching. Note that read caches are often explicitly volatile—in theevent of power loss, any data access is essentially directed to start atthe slower storage behind the now-assumed-to-be-empty read cache, evenif that read data must then flow through that read cache. There aredifferent read cache policies employed in different systems. The mostbasic form of read caching for block or file storage is to keep as muchof the most recently accessed data as possible in read cache. Metricsare kept of when was the last time (or how frequently) a certain block(or file, depending on storage type) of data was accessed—in that case,when new storage space is needed in read cache, the Least Recently Used(or alternately the Least Frequently Used) data is freed and allowed tobe overwritten. This strategy keeps all of the most recently accesseddata, that will fit, in the read cache.

Data copying and movement includes moving data from one storage tier toanother. Sometimes there are multiple tiers of storage. In oneembodiment, a system comprises a highest performance storage tier, whichmight include DRAM (e.g. as part of a read or write cache), a nexthighest performance storage tier which might include FC disk, and alower performance storage tier which might include SATA disk. There maybe additional tiers to even slower access media, e.g. near-line storage(tape in an ATL). HSM may be performed either internal to a storagesystem or by software external to the storage systems, in someapproaches.

In one embodiment, data movement may occur in two distinct phases:pre-migration and migration. First, pre-migration is copying the data tothe next storage tier, in one approach. When a set of data has beenpre-migrated, a complete copy of it is present at both the initialsource tier and at the destination tier. Pre-migrated data has beencopied. Second, migration occurs when the copy at the initial sourcetier is released for overwrite and/or overwritten so that the only copythat remains registered in the system is the one on the next level ofperformance storage, which is to say the destination copy of the datathat had been created by pre-migration, in one approach. When datamigration is complete, the data has essentially been moved.

In a preferred embodiment, a storage system comprises two main storagetiers. The first storage tier includes random access media disk storage,such as a disk array which may be RAID protected or not, just a bunch ofdisks (JBOD) or not, etc., which may use SATA HDDs and may includecaching at both the disk array level and in the HDDs. The second storagetier may include sequential access media, such as physical tape drivesand may utilize flow-through caching in the tape drives. The secondstorage tier additionally may include a vehicle to tape, such as TSM orLTFS.

According to one embodiment, once a file has been pre-migrated to thedestination, the list or index which tracks which instance of arecording belongs to which user may be updated to point to thedestination copy created by the pre-migration. Additionally, theoriginal user no longer “owns” or is associated with the source copy, inone approach. From the original user's “ownership” perspective, therecording has been moved. The previous instance may thus be released for(1) erasure, (2) overwrite (e.g. with a new recording), or (3) for someother user to take ownership over, in some approaches.

Typically with HSM, upon changing a given data entity (e.g. a file) frompre-migrated to migrated, the previous instance of the file (the sourceof the pre-migration copy) is released for overwrite. That said, itcould be erased, but that takes real storage system bandwidth, and thisis typically not necessary. Another option is to allow some other userto take ownership of it, in a preferred approach, for example, as partof a deduplicated replication performed to do HSM pre-migration ofanother user's recording.

When one deletes a file in a standard disk file system, like NTFS, a rowin the Master File Table (MFT) is deleted, which eliminates all themetadata associated with that file including the pointer to the datawritten elsewhere on disk. The data itself is not proactively erased oroverwritten. Instead the sectors that contain the data are returned tothe pool of available sectors, so that they may potentially beoverwritten in the future (e.g. by a new file). Whether it is actuallyoverwritten in the future is completely dependent on whether that diskspace is used in the future. It might not ever be overwritten. However,proactive overwriting of data may be employed, where desired in anembodiment.

Deduplicated replication (i.e. deduplication) may be employed in variousembodiments as a bandwidth efficient method of performing replication.Replication, in one approach, is the process by which a data object(which could be a file, a LUN, a volume, an extent, etc.) is copied. Areplication function is given some handle for a source object, and alsodirected as to where a copy of the object is desired—i.e. thedestination. The replication function then makes the copy of the sourceobject at the destination. Deduplicated replication does a similarthing, except potentially with much less bandwidth. Rather, it islooking to see whether any data within that object already exists at thedestination end. If so, there is no need to transfer all of the data tothe destination. Instead, only the missing (e.g. overwritten) portionsof the object on the destination are transferred to the destination,thereby saving bandwidth.

A common concept in deduplicated replication is consistent throughout,although it has multiple methods of implementation. According to oneembodiment, deduplicated replication comprises determining whether dataexists at the far end, before commencing the transfer operation. Methodsfor performing such a check include: (1) hash-based, (2) feature-based,and (3) file-based, according to some approaches. Other known techniquesmay also be used.

In one embodiment, hash-based deduplicated replication utilizescryptographic checksums to indicate a match. A long and strongcryptographic checksum, such as SHA-256, provides a very strong one-wayfunction, e.g. if two data points are identical, then when processedthey will yield the same SHA-256 calculations. On the other hand, if twodata points (one at the source, and one at the destination), whenprocessed, result in the same SHA-256 calculation, then the probabilityof them being anything other than an exact match is so exceptionallysmall as to be of no practical concern. Sometimes, other additionalchecks, such as checking that the data are of the same length, areadditionally used to provide additional confidence that two data whichcalculate to the same hash are in fact identical.

In another embodiment, feature-based deduplicated replication techniquesanalyze data features with a sliding window and determine theprobability of a match. These systems may only find a match afterconfirming identity via a bandwidth-intensive bit for bit comparison,which may not be desired for high performance systems.

In one preferred embodiment, it is desirable to modify this techniqueand enable deduplicated replication to a remote site to meet bandwidthconstraints and avoid latency on the connection between the two sites.In this embodiment, one may determine that data are the same with high,but not absolute accuracy. For example, a very strong checksum may becalculated across a source object (e.g. a file). A deduplicatedreplication of that object may then proceed, going with the assumptionthat anything that appears very likely (though not certain) to be amatching data point is in fact a matching data point. Once a fulldataset occupies the destination end, the system may then check theassumptions by calculating a strong checksum across the whole dataset atthe far end. If that calculation matches the calculation of the samestrong checksum at the source end, this indicates successfuldeduplicated replication of the data in the destination end exactly asit existed at the source end.

In yet another embodiment, file-based deduplicated replication looks forfull files to match, and does not attempt to find matching subsets ofdata. In the case of file-based deduplication, a checksum or hash may becalculated across the whole file. File-based deduplication may alsocheck that any two suspected matching files are also of exactly the samelength. Alternatively, a file name may also be used as a clue of apotential match; however, files may be renamed without changing the datacontents of that file. This is true not only for file name, but also forany metadata associated with a file. For example, two files might haveidentical data content (e.g. referring to the data stored on disk, whichare pointed to by the file system's index table (e.g. DOS's FAT, NTFS'sMFT, LTFS's index, etc.). Much of the metadata of a file, however,(including the file name and most Extended Attributes, but not thelength) might be completely different, which means that a lot of thefile metadata cannot be used to indicate a match.

Once established by any of the deduplicated replication techniquesdiscussed above, associating the data with one or more data objects maybe accomplished in several ways.

According to one embodiment, association includes creating a copy of thefile by creating a second pointer to the pre-existing data (i.e. thededuplicated storage technique).

In another embodiment, association includes creating a new instance ofthe data at the destination by copying from the existing instance at thedestination to create another, new instance, which may have performanceadvantages over copying from the source, especially if the new instancecan be created when copying within a local storage system.

In a preferred embodiment, in systems where a “spare” copy is available,association includes “adopting” an unassociated, or “orphaned” data atthe destination, e.g. either the data is not pointed to by any filemetadata (in the first option), or it is not pointed to by theSubs_List_X (in the second option). Adopting orphan data is preferableto creating a new local copy as it requires no data copying/movement.Only the new metadata and pointers have to be put in place, whichconserves bandwidth and processing capacity.

In some embodiments (like in the RS-DVR case), data identity need not becalculated mathematically as described above. For example, a uniqueprogram identifier (UPI) may be generated which may be associated with acollection of certain data. That UPI could be kept with any instance ofthat recording—e.g. as an extended attribute of that file. This providesa very convenient way to find out that two files, of potentiallydifferent names (or different in some other piece of metadata) do infact contain identical data, while conserving computational resourcesand reducing compute time compared to calculating hashes or checksums,or performing bit-for-bit comparisons.

In another embodiment, the UPI (extended) attribute is protected by thefile system such that any manipulation of the data in the file wouldcause that UPI to be set to a null value. That is, the file systempreserves the association of that UPI with a given set of data bydestroying the UPI if the data is changed. For example, this may beaccomplished via use of a file system (e.g. LTFS in the case of tape).In another embodiment, the UPI may be set to any other value whichindicates a change has occurred to the underlying data.

In several embodiments, deduplicated replication in a centralized RS-DVRstorage solution may enable very fast pre-migration of data awaiting HSMfrom one tier of storage to another. It could also be used to premigratedata on disk to tape in another embodiment. Or it may be used topre-migrate data on tape to disk. Other uses may also be apparent to oneof skill in the art.

According to one embodiment, pre-migration is just the first step in HSMmovement. The second step is to release the data in the source tier,after which time data migration is complete. The net effect whendeduplicated replication is being performed as part of a HSM is, whenseen macroscopically, that it results in moving, rather than copying,data. There is a transient copy being made as part of pre-migration, butonce the source is released, the destination has the sole instance ofthat data file—so it has truly been moved, not copied. In instanceswhere “atomic swapping” is used (possibly because spare copies are notavailable), ownership of a first data file is transferred from a firstuser to a second user. Therefore, in these instances, there is no actualdata movement, there is only a transfer of ownership from one data fileto another data file. This “atomic swapping” may be achieved bymaintaining two lists, one with the ownership as it originally is, andanother list with the ownership swapped, thereby providing access to thedesired data file. In order to execute the “atomic swap,” a pointer isswitched from pointing at the first list to the pointing at the secondlist, thereby providing instantaneous swapping of ownership, in oneembodiment. Note that the “atomic swap” technique may also be used afterpremigrated copies are created to complete a migration, in which case,at the completion of that “atomic swap,” the disk copies are abandoned(not orphaned, but irretrievably freed for overwrite).

There is a desire to migrate a different user Y's recording which ispresently on tape to disk, in one example. If HSM is used, then theoperation comprises two standard steps. First, pre-migrate the data fromtape to disk by deduplicated replication. In this case, the deduplicatedreplication routine identifies that there actually already is anunassociated, or “orphaned,” copy of that same recording on disk. Thesystem completes the “copy” by transferring the metadata from the sourceand associating it with the orphaned data by changing the structurewhich tracks file ownership to associate the user's ID from the data atthe source to that data at the destination. That change essentiallyadopts the data at the target location, so that it is no longerorphaned—and is thus no longer available for further assignment oroverwrite. Second, the migration to disk is completed by releasing thesource copy on tape.

Releasing the copy on tape essentially “orphans” that data. Thisorphaning may occur in several ways. In a first example, that file maybe deleted by removing the file from the index stored to the tape, butthis may take 30 seconds or more. Another example is to have ownershiptracked by one or more external data structures. In that case, a filecould be released very quickly (in less than a second). In one approach,another index may be created, called Orphan_List_X for example, whichtracks the freed recordings of X. In this case, the releasing of thecopy on tape involves removing the entry from Subs_List_X and adding anentry in Orphan_List_X. Steps 1 and 2 may be accomplished very rapidly(e.g. in less than a second), which is a benefit of this technique.

In one embodiment, orphaned copies of data may be used as part ofdeduplicated replication performed as part of pre-migration. Meanwhile,in a preferred embodiment, open and systematic usage of copies may beenabled.

For example, if twelve HDDs comprise a system and RAID-5 provides atleast 1/11=9% overhead for RAID, then in one instance where 10,000 usersrecord a given show, RAID-5 would require 9%×10,000, or 900 HDDs for useas data protection. One embodiment of the present invention may achieveabout equivalent protection from a system storing 10,020 copies of thedata to disk (one copy for each user who recorded it and 20 spares).Additionally, spares are available for reassignment to replace any ofthe 10,000 HDDs holding users recordings. Such a preferred embodimentmay produce 0.2% overhead instead of 8%, reducing the overhead forredundancy by a factor of 40.

In one embodiment, a file may be moved from tape to disk very quickly byusing deduplicated replication and only updating data structures ondisk. This relies on finding an orphaned copy of the data on disk, whichis data that had been released and made available for overwrite.However, in another embodiment, assigning orphaned data to spare copiesof that recording, or irrevocably releasing the orphaned data foroverwrite would allow for much more systematic usage. The pool of sparesmay be managed down to the proper size for use in both replacingrecordings that were on HDDs that have failed, and as the destination ofa pre-migration as part of a “data-less” file move, in one approach.Dealing with spare copies more openly is simpler, cleaner, moreefficient, and less error prone.

Any method for migrating data between tape and disk may be used with theembodiments described herein. In one such embodiment which uses IBM'sTSM, iDataplex data may be sent to one of TSM's APIs (Backup, Archive,or HSM) with the TSM HSM API preferred.

An alternative embodiment to TSM may use the Long Term File System(LTFS), which is a true file system for tape. LTFS presents a standardPOSIX interface (e.g. fopen, fclose, fseek, fsync, etc.) which most anyapplication may write to, so it is simple to interface iDataplex to it.A UPI which is associated with the recording of a certain program may becreated. Also, some ordinal number associated with a given instance ofthat recording (e.g. Instance Number) may be tracked. Alternatively, thefile pointer or location where the instance is stored may be trackedinstead of instance number. All association between a user identifierand a recording's unique instance identifier may be managed through anexternal table, such as the type shown in FIG. 4. If the location is theinstance number, then it is exactly as shown in FIG. 4. If some ordinalinstance number is tracked, then in addition to the pair described (userID and file pointer) in FIG. 4, then there may be a third fieldassociated with each recording. Also, the information may be consideredan array associated with the pairing of a given recording and a givenuser which may have one or more additional fields. Since the table withan array for each recording is maintained away from the tape itself, itmay be updated electronically to reflect ownership changes associatedwith “data-less” file transfers as recordings are HSM'd from disk totape or vice versa. If so, then a “data-less” HSM movement to or fromtape may be accomplished without requiring any tape cartridge toactually be mounted or updated.

In one embodiment, just before a program begins to be broadcast by aprovider, such as a cable or satellite provider, an assessment is madeof the number of users who elected to record it (R), with an R of 0indicating that no recording is to be made. In addition, the uniqueidentity of each user is also recorded (e.g. in Subs_List_X).

One particular embodiment uses some number of sufficient spares (S) toassure that all of the R users will be able to view the program theyrecorded, even in the event of up to S disk failures.

Once the recording is actually complete, then this embodiment of thesystem has R+S copies of the recording on disk, which is sufficient tosatisfy the maximum number of simultaneous viewings that may reasonablybe expected from a prudence point of view, i.e. even accounting for alarger than normal set of simultaneous viewers and failures. This issomething that may be determined by looking at real RS-DVR viewingstatistics over time and interpolating efficient solutions based on pastusage.

A lot of the control of the HSM flow may be done by moving files betweenlists while monitoring the number of items in each of those lists.Imagine that rather than one Subs_List_X, 5 lists are tracking thatinformation, one for each major usage: (1) Disk_Viewing_X which istracking recordings on disk which are being accessed by a user; (2)Disk_Owned_X which is tracking recordings on disk which are owned by auser, but not presently being accessed; (3) Disk_Spare_X which istracking the redundant copies on disk which may be used should a HDDholding a user owned recording of program X fail; (4) Tape_Owned_X whichis tracking recordings on tape which are owned by a user; and (5)Tape_Spare_X which is tracking the redundant copies on tape which may beused should a tape holding a user owned recording fail.

Before recording, assume there is one array of information (that arraycould be the user recording pair referred to above or it could containmore than 2 pieces of information per recording) created in Disk_Owned_Xfor each user, and it has a pointer for the file opened to recordprogram X for that user. Note that should a user elect to start viewinghis recording while it is still recording, then the array of informationassociated with that user and recording is moved from the Disk_Owned_Xto Disk_Viewing_X list, in one embodiment.

Similarly there is one array for each spare created on disk forredundancy in parallel with the user owned recordings, in anotherembodiment.

After recording, the HSM control may see all the completed recordings inDisk_Active_X as idle recordings that represent a cost savingsopportunity, and so HSM movement may begin moving those to tape,creating the pre-migrated copy for each of them. Typically, though,there may be a maximum number of simultaneous HSM movements that may beperformed and so perhaps not all Disk_Active_X recordings may be HSM'dsimultaneously, but instead may be moved in batch operations over time.

In one approach, once a complete pre-migrated copy exists on tape, themigration may be expeditiously completed. The entry associated with thatuser's recording on disk is moved from Disk_Active_X to Disk_Spare_X.And an entry is created for that user's recording on tape inTape_Owned_X. When these steps are complete, the movement of that user'srecording from disk to tape has been completed. HSM movement continuesas long as there are additional entries in Disk_Active_X to be moved totape.

At any point in this process, a user who is viewing a recording maydiscontinue viewing (e.g. push Stop and exit from the play menu for thatrecording) and at that point the array associated with that user'srecording may be moved from Disk_Viewing_X to Disk_Active_X and become acandidate for HSM movement to tape, in one approach.

At any point in this process, a user who was not viewing the savedrecording may elect to start viewing the recording. There are many waysin which this may happen. Two exemplary ways are described below,depending on where the recording is located.

In a first embodiment, if the array associated with the saved recordingis in Disk_Active_X, it is moved to Disk_Viewing_X, thereby enablingplayback.

In a second embodiment, if the array associated with the recording is inTape_Active_X, it is first moved from disk to tape. This is achieved viaa “data-less” file movement, as previously described. Any element inDisk_Spare_X may be viewed as an orphaned recording of program X whichmay be adopted. Once that orphaned recording is identified, it is takenoff the Disk_Spare_X list and instead becomes the pre-migrated copy ofthat user's recording on disk. The migration is then completed by movingthe entry associated with that user's recording on tape fromTape_Active_X to Tape_Spare_X. Also, an entry is created for that user'srecording on disk in Disk_Viewing_X. When these steps are complete (andall of this manipulation of data structure in memory may occur in lessthan a second), the movement of that user's recording from tape to diskhas been completed, according to one approach.

At any point in this process, a user who owns a recording may elect todelete the recording. The deleted recording becomes a spare, and if therecording was in Disk_Viewing_X or Disk_Active_X, it is moved toDisk_Spare_X. If the recording was in Tape_Active_X, it is moved toTape_Spare_X.

In all of the steps above, the number of recordings was either increasedor preserved, but never reduced. However, one purpose of HSM movement isto lower the cost of storage, which means that at some point the numberof recordings on disk should be reduced or not further increased. TheHSM process, in one embodiment, monitors the total number of recordingson disk (i.e. the total number in the three lists Disk_Viewing_X,Disk_Active_X, and Disk_Spare_X). Also, it makes an assessment of thetotal number of recordings on disk to efficiently provide access to allusers desiring access. There may be a lower bound, e.g. all therecordings associated with Disk_Viewing_X must be maintained on disk.Aside from the number to be kept on disk for viewing purposes, somenumber of recordings may be kept on disk as spares to replace anyrecordings on disk that fail. This value of spares may be determinedperiodically or constantly, in order to ensure no user's requests makeuse of a recording on tape that must be moved to disk.

An upper bound is the total number of users who have kept the recording(i.e. have not deleted the recording). For a large number of keptrecordings of a given program X, it seems exceptionally unlikelyprobabilistically that this bound would ever be approached. Instead,user viewing history might show that only some fraction of the number ofuser recordings may be kept on disk, and that may potentially satisfyall the simultaneous viewers one may reasonably expect to see with highprobability. Aside from the prudent number of recordings to keep on diskfor viewing (even accounting for a future surge) and the number ofspares that are used to protect against loss or corruption of one ofthose recordings on disk, all of the other recordings on disk may bemoved to tape and truly freed on disk. Traditionally, these recordingswould be truly freed on disk when they are irrevocably put into a listof available extents for overwrite. At that point, they would no longerbe tracked as orphaned recordings which may be adopted, but rather justavailable disk space. That said, it may be possible to track freed butas yet unused recordings for possible adoption, should that be necessary(e.g. if a surge of viewers exceeds the allowed contingency provided inDisk_Active_X and Disk_Spare_X).

These concepts are illustrated by example in Table 1, below. Note thatby time T20 that there are forty users who have kept a recording (i.e.have not deleted it), but only seven of those forty are determined to bekept on disk. The other 33 are on tape. Note that 96 recordings that hadbeen created on disk initially have been freed for overwrite. Similarly,17 of the copies on tape are freed. In the case of tape, that emptyspace is entrapped within the serial write stream, but may be reclaimedat some point in the future when that cartridge's still valid contentsare rewritten to another tape and the original cartridge is then freedfor complete overwrite (which is referred to as being put into thescratch pool).

TABLE 1 Timepoint T1 T2 T3 T4 T5 T6 T7 T20 Comment While Recording AfterAfter After After After After Recording Complete 1st 2nd 3rd 4th 5th18th HSM HSM HSM HSM HSM HSM Recordings Kept 100 (R) 98 95 90 80 71 6340 (K) Spare Recordings 3 3 3 3 2 2 2 2 Needed (S) Copies Kept 103 10190 68 50 25 15 7 Prudently (P) Viewers (V) 80 76 45 30 20 10 6 2 UnusedDisk 23 25 45 40 36 21 9 5 Copies (W) Orphaned (Free) 0 2/27 13/58 33/7347/83 72/93 88/97 96/101 Disk Copies User Copies on 0 0 5 20 30 40 45 33Tape (X) Spare Copies on 0 0 5 0 0 0 5 17 Tape (Y) Copies undergoing 010 10 10 10 10 0 0 HSM (disk-tape) Tape copies free 0 0 0 0 0 0 4/513/15  for reclamation

One aspect of tape storage that may increase is the need to reclaim lostspace as data gets invalidated—something called reclamation processing.For example, a tape which was originally filled with valid data might atsome future point in time only include 40% valid data, because 60% ofthe data has expired or is unwanted. In one embodiment, spares could betargeted to copies on a specific cartridge. In another embodiment, anyvalid recordings may be moved from a given cartridge to be emptied toanother cartridge which is to be retained. So if tape cartridge C hasonly seven remaining valid recordings (that are not on the spare list),for example at 50 GB each, and tape cartridge D has nine orphanedrecordings, the seven valid recordings on cartridge C may be moved via“data-less” transfer to cartridge D. This has emptied cartridge C so itmay become a “spare” cartridge and may effectively be rewritten from thestart of that cartridge.

As discussed above, HSM movement of identical recordings of some programto tape may be achieved by standard transfer of the first such recording(file) and then transferring all subsequent copies of that recording via“data-less” movements. But a tape drive may have limited buffer storageand limited intelligence. So while a tape drive may conceivably be usedas the target of some “data-less” transfer under some circumstances(e.g. a manufacturing write function may implement a special case ofthis for a relatively small amount of data), it may not be able tohandle the general case (e.g. very large files that exceed the size ofthe tape drive buffer). In an alternative embodiment employing LTFS asthe HSM engine, a next copy of that same file may be transferred fromiDataplex to LTFS via the “data-less” file transfer method discussedabove. In yet another embodiment, LTFS may receive a file (recording)once, yet writes the file to tape a predetermined number of times. Notethat in some environments, this may create a potential problem; however,in some cases, use of the “atomic swap” method may address this problem.That is, if N copies are made on tape, but at first none of those Ncopies are owned, they are simply pre-migrated copies. Then, using the“atomic swap” technique described previously, there is a point in timebeyond which all of those N copies on tape are owned. Simultaneously, Ncopies on disk are abandoned (not orphaned, but irretrievably freed tobe overwritten). Thus, embodiments using LTFS as an intermediary arecapable of dramatically reducing the bandwidth that iDataplex needs toprovide to allow HSM movement.

One upper interface to LTFS used today is POSIX. In one embodiment, amodified POSIX may enable an application to do “data-less” filetransfers by extending the upper POSIX interface so that it supports allthe standard POSIX commands in addition to an extended command or twowhich enables “data-less” file copies to be created. For example, if inaddition to the standard POSIX commands (e.g. fopen, fclose, fseek,etc.), if LTFS also supports a new fclone command to create another copyof a file (e.g. perhaps the previous file, or perhaps by providing afile pointer to the previous file), then the POSIX API may have beensufficiently extended enough to enable multiple simultaneous filetransfers.

In yet another embodiment, a recording is not stored as one big file butrather as a linked set of files of shorter length. As an example, theshorter files might have 10 minutes of video in length or any otherlength. In this example, a 30 minute recording is a set of 3 of those 10minute files linked together. Also, a 3 hour recording might be a set of18 of those 10 minute files linked together. Note that once the firsttwo 10 minute segments of a show have been accessed and traversed, theviewer is apparently viewing the third segment, the probability of thatviewer later deleting that first segment without ever viewing it againis very high.

Because of this tendency, HSM to tape of the first 10 minutes of arecording as soon as a sufficient number of users have already seen itand are now viewing the 3rd 10 minute segment may begin aggressively.This assumes there is sufficient bandwidth to do so—but even this may beessentially facilitated by rotating the assignment of which drives arestoring the spare segments. If the third segment is being stored todifferent HDDs than the first segment, then the HDDs being used to storethe first segment may be available—and thus have bandwidth so they mayparticipate in HSM migration.

This potentially allows for more HSM to tape, and so relies on even lessdata on disk, which further helps reduce costs. For example, if completerecordings are being kept, then perhaps 100 full recordings are kept ondisk, because there could conceivably be a rush of up to nearly 100viewers simultaneously replaying at least a portion of that program. Butthe chances of all 100 starting simultaneously (e.g. to within 10minutes) is probably small, at least for a long program (e.g. 2 hours).Therefore, the system might be able to store only six copies of eachsegment on disk instead.

Note that during programming of recording-long exceptions (e.g.recordings to start sooner, end later, etc.) when segments are notinvolved, then the whole specialized recording is very likely a uniqueoperation. However, assume a “normal” 2 hour program is recorded assegments B, C, D, E, F, and G. Starting that recording 5 minutes earlyresults in a partial segment, referred to here as A′, which might beunique to that one user. Similarly, recording that program for longermight result in a partial segment, referred to here as H′, which mightbe unique to that one user. Because A′ and H′ may be dealt withseparately for that unique user, while leaving all the other segments (Bthru G) common with users that performed a standard length recording, itallows for treating the bulk of the recording as a part of a much largerpool of recordings which enables “data-less” segment file moves (e.g. aspart of HSM).

The same problem may exist in reverse for recording-short exceptions(e.g. recordings to start later, end sooner, etc.). In that case, thefirst and last segments may be anomalous to giving B′ and G′.

An alternative to storing special length segments (e.g. A′, B′, G′, orH′ in the two examples above) is to simply store the full 10-minutesegments (i.e. A, B, G, and H) as well as a pointer which indicateswhere a given user may view the associated segment. For example, if eachsegment has an associated start pointer, then in the case of A′ and B′,the start pointer may be non-zero indicating that some number of thefirst minutes of that segment have to be skipped over transparently, sothat to the user they are not even there. Assume that each segment alsohas an associated stop pointer. In the case of G′ and H′ the stoppointer would be pointed somewhere before the end of the 10-minutesegment, indicating that some number of the final minutes of thatsegment are to be skipped over transparently, so that to the user theyare not even there. Use of start and stop pointers may allow allrecordings to be comprised of some integer number of linked equal-lengthrecorded segments, in one approach. All segments might be exactly10-minutes long (per the example above), or some other length (e.g. 1second, 1 minute, 5 minutes, 30 seconds, etc.) if that proves to be moreoptimal from a system point of view).

Today's tape drives provide the lowest cost form of enterprise classstorage, yet still have challenges. The biggest single challenge isaccess time. Random access to a file on tape may take 1 to 2 minutes ormore if that tape is not presently mounted (e.g. 5-10 seconds to mount,15 seconds to load/thread, and up to 90 seconds to seek to the start ofa file)—and a user may not be willing to wait 2 minutes to start playingback a recording. Also, tape data rates between tape generations havesometimes increased less than the increase in capacity betweengenerations (e.g. in LTO-4 vs LTO-3, or LTO-5 vs LTO-4) which increasesthe cartridge fill time.

The continuing near-geometric growth in storage device capacity wouldrequire a commensurate increase in drive data rate to keep the fill timeconstant, but increasing the data rate can sometimes unacceptablyincrease the drive cost. But, if one may implement along all of thelines argued for above when implementing a storage solution for RS-DVR,which results in “data-less” file transfers from tape to disk, then thisallows all primary issues with tape to be overcome—and the lowest costform of storage is made available for use. Neither fill time nor accesstime is an issue, both are just dealt with transparently as part of abackground process.

Using the techniques described herein according to various embodiments,a substantially lower cost RS-DVR solution may be constructed whichstores a significant fraction of users' recordings on tape, yet achievesacceptable performance.

Now referring to FIG. 7, a method 700 is shown according to oneembodiment. The method 700 may be carried out in any desiredenvironment, including but not limited to, those shown in FIGS. 1-6,according to various embodiments. Of course, the method 700 may includemore or less operations than those described below, and shown in FIG. 7,as would be known to one of skill in the art.

In one preferred embodiment, the operations in FIG. 7 may be carried outby a storage system manager, as described previously.

In operation 702, it is determined when to migrate an instance of a fileassociated with a first user and stored on a first storage tier of astorage system to a second storage tier of the storage system. Theinstance of the file may be a copy, replication, duplication, etc., of atelevision program and may be associated with the first user because thefirst user requested the program to be recorded from a televisionbroadcast, according to one embodiment. Of course, the association andthe file may be of any type as would be apparent to one of skill in theart upon reading the present descriptions.

In one embodiment, the instance of the file on the first storage tiermay be migrated after the file has not been accessed for a predeterminedperiod of time, such as 10 days, 1 day, 10 hours, 1 hour, etc. Inanother embodiment, it may be migrated after occurrence of an event,such as a capacity of the first storage tier reaching a lower threshold,a total period of time residing on the first storage tier, aninstruction from the first user or an administrator of the storagesystem, etc.

In operation 704, an instance of the file or portion thereof is searchedfor on the second storage tier that is not associated with any user.This instance on the second storage tier that is not associated with anyuser may be a “spare” instance, an instance recently requested to bedeleted by a user, etc.

In one embodiment, if an instance of only a portion of the file isfound, the searching may be repeated to attempt to find a remainingportion of the file. For example, if a complete instance of the file isnot found on the second storage tier during the searching, any portionof the file may be collected to be combined with remaining portions ofthe file to form a complete instance of the file. In a furtherembodiment, any portion of the file that is not found during thesearching may be replicated from an instance of the file or portionthereof on the second tier. This conserves bandwidth between the firststorage tier and the second storage tier, and speeds up the process ofmigrating data down through the storage system.

In operation 706, the instance of the file or portion thereof on thesecond storage tier is associated with the first user. This indicatesthat the first user has the right to access this instance of the file.It also keeps other users from accessing the instance of the file whenthe instances are associated to users on a one-to-one basis.

In operation 708, the instance of the file on the first storage tier isdisassociated from the first user. This allows the instance of the fileon the first storage tier to be associated with another user to beaccessed by that other user. It also maintains a one-to-one instance touser association preferred in the present embodiment. For example,according to one embodiment, any instance of the file may be capable ofbeing owned by no more than one user at a time.

In one preferred embodiment, the file may include video data from atelevision broadcast, internet broadcast, video on demand, etc.

In another approach, the searching for the instance of the file orportion thereof on the second storage tier may be selected from a groupconsisting of: searching for an identifier of the file, comparing acryptographic checksum calculation of the file and one or more instancesof the file on the second storage tier, comparing the file with one ormore instances of the file on the second storage tier bit-by-bit,comparing a size of the file with one or more instances of the file onthe second storage tier. Size may indicate a number of bits, a length,and/or may include a similar size or a size greater than the file size,etc.

According to another approach, the first storage tier of the storagesystem may include at least one random access storage medium, whichincludes magnetic disk media. Further, the second storage tier of thestorage system may include at least one sequential access storagemedium, which includes magnetic tape media.

Now referring to FIG. 8, a method 800 is shown according to oneembodiment. The method 800 may be carried out in any desiredenvironment, including but not limited to, those shown in FIGS. 1-6,according to various embodiments. Of course, the method 800 may includemore or less operations than those described below, and shown in FIG. 8,as would be known to one of skill in the art.

In operation 802, it is determined when to migrate an instance of a fileassociated with a first user and stored on a first storage tier of astorage system to a second storage tier of the storage system. Theinstance of the file may be a television program and may be associatedwith the first user because the first user requested the program to berecorded from a television broadcast, according to one embodiment. Ofcourse, the association and the file may be of any type as would beapparent to one of skill in the art upon reading the presentdescriptions.

In one embodiment, the instance of the file on the first storage tiermay be migrated after the file has not been accessed for a predeterminedperiod of time, such as 10 days, 1 day, 10 hours, 1 hour, etc. Inanother embodiment, it may be migrated after occurrence of an event,such as a capacity of the first storage tier reaching a lower threshold,a total period of time residing on the first storage tier, aninstruction from the first user or an administrator of the storagesystem, etc.

In operation 804, an instance of the file or portion thereof is searchedfor on the second storage tier. In one embodiment, if an instance ofonly a portion of the file is found, the searching may be repeated toattempt to find a remaining portion of the file. For example, if acomplete instance of the file is not found on the second storage tierduring the searching, any portion of the file may be collected to becombined with remaining portions of the file to form a complete instanceof the file.

In operation 806, the instance of the file or portion thereof on thesecond storage tier is replicated. For example, if a complete instanceof the file is not found on the second storage tier during thesearching, any portion of the file may be collected to be combined withremaining portions of the file to form a complete instance of the file.In a further embodiment, any portion of the file that is not foundduring the searching may be replicated from an instance of the file orportion thereof on the second tier. This conserves bandwidth between thefirst storage tier and the second storage tier, and speeds up theprocess of migrating data down through the storage system.

In operation 808, the replicated instance of the file or portion thereofon the second storage tier is associated with the first user. Thisindicates that the first user has the right to access this instance ofthe file. It also keeps other users from accessing the instance of thefile when the instances are associated to users on a one-to-one basis.Of course, if one or more instances of portions of the file areassociated with the first user, these instances of portions of the filemay be combined to form a “complete” instance of the file prior to,during, or after association with the first user.

In operation 810, the instance of the file on the first storage tier isdisassociated from the first user. This allows the instance of the fileon the first storage tier to be associated with another user to beaccessed by that other user. It also maintains the one-to-one instanceto user association preferred in the present embodiment.

In one preferred embodiment, the file may include video data from abroadcast such as a television broadcast, internet broadcast, video ondemand, etc.

In another approach, the searching for the instance of the file orportion thereof on the second storage tier may be selected from a groupconsisting of: searching for an identifier of the file, comparing acryptographic checksum calculation of the file and one or more instancesof the file on the second storage tier, comparing the file with one ormore instances of the file on the second storage tier bit-by-bit,comparing a size of the file with one or more instances of the file onthe second storage tier. Size may indicate a number of bits, a length,and/or may include a similar size or a size greater than the file size,etc.

According to another approach, the first storage tier of the storagesystem may include at least one random access storage medium, whichincludes magnetic disk media. Further, the second storage tier of thestorage system may include at least one sequential access storagemedium, which includes magnetic tape media.

In another embodiment, the methods 700 and/or 800 described above may beimplemented in a computer program product for managing a storage system.For example, the computer program product may include a computerreadable storage medium having computer readable program code embodiedtherewith, the computer readable program code comprising computerreadable program code configured to determine when to migrate aninstance of a file associated with a first user that is stored on afirst storage tier of a storage system to a second storage tier of thestorage system, computer readable program code configured to search foran instance of the file or portion thereof on the second storage tierthat is not associated with any user, computer readable program codeconfigured to search for an instance on the second storage tier of thestorage system that includes a remaining portion of the file, computerreadable program code configured to replicate the instance of the fileor portion thereof on the second storage tier, computer readable programcode configured to associate the instance or replicated instance of thefile or portion thereof on the second storage tier with the first user,and computer readable program code configured to disassociate theinstance of the file on the first storage tier from the first user.

The computer program product may include any of the embodimentsdescribed above as well, as would be apparent to one of skill in the artupon reading the present descriptions.

While various embodiments have been described above, it should beunderstood that they have been presented by way of example only, and notlimitation. Thus, the breadth and scope of an embodiment of the presentinvention should not be limited by any of the above-described exemplaryembodiments, but should be defined only in accordance with the followingclaims and their equivalents.

1. A storage system, comprising: a first storage tier; a second storagetier; logic for storing instances of a file in the first storage tierand the second storage tier; logic for determining when to migrate aninstance of the file associated with a first user and stored on thefirst storage tier to the second storage tier; logic for searching foran instance of the file or portion thereof on the second storage tierthat is not associated with any user; logic for associating the instanceof the file or portion thereof on the second storage tier with the firstuser; and logic for disassociating the instance of the file on the firststorage tier from the first user.
 2. The storage system as recited inclaim 1, wherein the first storage tier includes at least one randomaccess storage medium and wherein the second storage tier includes atleast one sequential access storage medium.
 3. The storage system asrecited in claim 1, wherein if an instance of only a portion of the fileis found, the searching is repeated to attempt to find a remainingportion of the file.
 4. The storage system as recited in claim 3,wherein any portion of the file that is not found during the searchingis replicated from an instance of the file or portion thereof on thesecond storage tier.
 5. The storage system as recited in claim 1,wherein the logic for searching for the instance of the file or portionthereof on the second storage tier is selected from a group consistingof: searching for an identifier of the file, comparing a cryptographicchecksum calculation of the file and one or more instances of the fileon the second storage tier, comparing the file with one or moreinstances of the file on the second storage tier bit-by-bit, andcomparing a size of the file with one or more instances of the file onthe second storage tier.
 6. The storage system as recited in claim 1,wherein the file and instances thereof include video data from abroadcast.
 7. A storage system, comprising: a first storage tier; asecond storage tier; logic for storing instances of a file in the firststorage tier and the second storage tier; logic for determining when tomigrate an instance of the file associated with a first user and storedon the first storage tier to the second storage tier; logic forsearching for an instance of the file or portion thereof on the secondstorage tier; logic for replicating the instance of the file or portionthereof on the second storage tier; logic for associating the replicatedinstance of the file or portion thereof on the second storage tier withthe first user; and logic for disassociating the instance of the file onthe first storage tier from the first user.
 8. The storage system asrecited in claim 7, wherein the first storage tier includes at least onerandom access storage medium and wherein the second storage tierincludes at least one sequential access storage medium.
 9. The storagesystem as recited in claim 7, wherein if an instance of only a portionof the file is found, the searching is repeated to attempt to find aremaining portion of the file.
 10. The storage system as recited inclaim 7, wherein the logic for searching for the instance of the file orportion thereof on the second storage tier is selected from a groupconsisting of: searching for an identifier of the file, comparing acryptographic checksum calculation of the file and one or more instancesof the file on the second storage tier, comparing the file with one ormore instances of the file on the second storage tier bit-by-bit, andcomparing a size of the file with one or more instances of the file onthe second storage tier.
 11. The storage system as recited in claim 7,wherein the file and instances thereof include video data from abroadcast.
 12. A method, comprising: determining when to migrate aninstance of a file associated with a first user and stored on a firststorage tier of a storage system to a second storage tier of the storagesystem; searching for an instance of the file or portion thereof on thesecond storage tier that is not associated with any user; associatingthe instance of the file or portion thereof on the second storage tierwith the first user; and disassociating the instance of the file on thefirst storage tier from the first user.
 13. The method as recited inclaim 12, wherein the searching for the instance of the file or portionthereof on the second storage tier is selected from a group consistingof: searching for an identifier of the file, comparing a cryptographicchecksum calculation of the file and one or more instances of the fileon the second storage tier, comparing the file with one or moreinstances of the file on the second storage tier bit-by-bit, andcomparing a size of the file with one or more instances of the file onthe second storage tier.
 14. The method as recited in claim 12, whereinif an instance of only a portion of the file is found, the searching isrepeated to attempt to find a remaining portion of the file.
 15. Themethod as recited in claim 14, wherein any portion of the file that isnot found during the searching is replicated from an instance of thefile or portion thereof on the second tier.
 16. The method as recited inclaim 12, wherein the file includes video data from a broadcast.
 17. Amethod, comprising: determining when to migrate an instance of a fileassociated with a first user and stored on a first storage tier of astorage system to a second storage tier of the storage system; searchingfor an instance of the file or portion thereof on the second storagetier; replicating the instance of the file or portion thereof on thesecond storage tier; associating the replicated instance of the file orportion thereof on the second storage tier with the first user; anddisassociating the instance of the file on the first storage tier fromthe first user.
 18. The method as recited in claim 17, wherein thesearching for the instance of the file or portion thereof on the secondstorage tier is selected from a group consisting of: searching for anidentifier of the file, comparing a cryptographic checksum calculationof the file and one or more instances of the file on the second storagetier, comparing the file with one or more instances of the file on thesecond storage tier bit-by-bit, and comparing a size of the file withone or more instances of the file on the second storage tier.
 19. Themethod as recited in claim 17, wherein if an instance of only a portionof the file is found, the searching is repeated to attempt to find aremaining portion of the file.
 20. The method as recited in claim 17,wherein the file and instances thereof include video data from abroadcast.
 21. A computer program product for managing a storage system,the computer program product comprising: a computer readable storagemedium having computer readable program code embodied therewith, thecomputer readable program code comprising: computer readable programcode configured to determine when to migrate an instance of a fileassociated with a first user that is stored on a first storage tier of astorage system to a second storage tier of the storage system; computerreadable program code configured to search for an instance of the fileor portion thereof on the second storage tier that is not associatedwith any user; computer readable program code configured to search foran instance on the second storage tier of the storage system thatincludes a remaining portion of the file; computer readable program codeconfigured to replicate the instance of the file or portion thereof onthe second storage tier; computer readable program code configured toassociate the instance or replicated instance of the file or portionthereof on the second storage tier with the first user; and computerreadable program code configured to disassociate the instance of thefile on the first storage tier from the first user.
 22. The computerprogram product as recited in claim 21, wherein the file and instancesthereof include video data from a broadcast.
 23. The computer programproduct as recited in claim 21, wherein if an instance of only a portionof the file is found, the searching is repeated to attempt to find aremaining portion of the file.
 24. The computer program product asrecited in claim 23, wherein any portion of the file that is not foundduring the searching is replicated from an instance on the second tier.25. The computer program product as recited in claim 21, wherein thecomputer readable program code configured to search for an instance ofthe file or portion thereof on the second storage tier is selected froma group consisting of: computer readable program code configured tosearch for an identifier of the file; computer readable program codeconfigured to compare a cryptographic checksum calculation of the fileand one or more instances on the second storage tier; computer readableprogram code configured to compare the file with one or more instanceson the second storage tier bit-by-bit; and computer readable programcode configured to compare a size of the file with one or more instanceson the second storage tier.